﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	///<summary>
	///(Общ)
	///</summary>
	[DataContract]
	public enum СпособыНачисленияАмортизацииОС
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"9473e3dc-e6ce-462a-9cd6-580f9dd94eed\", \"Представление\":\"Линейный\"}")]
		Линейный = 0,//Линейный способ
		[EnumMember(Value = "{\"Ссылка\":\"975c0446-0bf6-4d54-a45c-a0a380381ff3\", \"Представление\":\"УменьшаемогоОстатка\"}")]
		УменьшаемогоОстатка = 1,//Способ уменьшаемого остатка
		[EnumMember(Value = "{\"Ссылка\":\"cac126ab-b91b-4e3d-ab4e-fc2715c8d932\", \"Представление\":\"ПоСуммеЧиселЛетИспользования\"}")]
		ПоСуммеЧиселЛетИспользования = 2,//По сумме чисел лет срока полезного использования
		[EnumMember(Value = "{\"Ссылка\":\"7cba21d4-cfb0-47c2-8db0-aff0e3ed1b3e\", \"Представление\":\"ПропорциональноОбъемуПродукции\"}")]
		ПропорциональноОбъемуПродукции = 3,//Пропорционально объему продукции (работ)
		[EnumMember(Value = "{\"Ссылка\":\"19941722-03f9-4f35-a95f-c422693f1c69\", \"Представление\":\"ПоЕНАОФ\"}")]
		ПоЕНАОФ = 4,//По единым нормам амортизационных отчислений
		[EnumMember(Value = "{\"Ссылка\":\"d136da97-7724-4d32-a647-5166f10c9c9e\", \"Представление\":\"ПоЕНАОФНа1000кмПробега\"}")]
		ПоЕНАОФНа1000кмПробега = 5,//По единым нормам амортизационных отчислений (на 1000 км пробега)
		[EnumMember(Value = "{\"Ссылка\":\"95bfdbdf-1db6-4da7-a527-aa6faa3b43e2\", \"Представление\":\"ПоИндивидуальномуГрафику\"}")]
		ПоИндивидуальномуГрафику = 6,//По индивидуальному графику амортизации
	}
	public static partial class СпособыНачисленияАмортизацииОС_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid Линейный = new Guid("0f58d69c-d99d-ed4e-462a-e6ce9473e3dc");//Линейный способ
		public static readonly Guid УменьшаемогоОстатка = new Guid("a3a05ca4-3880-f31f-4d54-0bf6975c0446");//Способ уменьшаемого остатка
		public static readonly Guid ПоСуммеЧиселЛетИспользования = new Guid("27fc4eab-c815-32d9-4e3d-b91bcac126ab");//По сумме чисел лет срока полезного использования
		public static readonly Guid ПропорциональноОбъемуПродукции = new Guid("f0afb08d-ede3-3e1b-47c2-cfb07cba21d4");//Пропорционально объему продукции (работ)
		public static readonly Guid ПоЕНАОФ = new Guid("22c45fa9-3f69-691c-4f35-03f919941722");//По единым нормам амортизационных отчислений
		public static readonly Guid ПоЕНАОФНа1000кмПробега = new Guid("665147a6-0cf1-9e9c-4d32-7724d136da97");//По единым нормам амортизационных отчислений (на 1000 км пробега)
		public static readonly Guid ПоИндивидуальномуГрафику = new Guid("6faa27a5-3baa-e243-4da7-1db695bfdbdf");//По индивидуальному графику амортизации
		public static СпособыНачисленияАмортизацииОС Получить(this СпособыНачисленияАмортизацииОС Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static СпособыНачисленияАмортизацииОС Получить(this СпособыНачисленияАмортизацииОС Значение, Guid Ссылка)
		{
			if(Ссылка == Линейный)
			{
				return СпособыНачисленияАмортизацииОС.Линейный;
			}
			else if(Ссылка == УменьшаемогоОстатка)
			{
				return СпособыНачисленияАмортизацииОС.УменьшаемогоОстатка;
			}
			else if(Ссылка == ПоСуммеЧиселЛетИспользования)
			{
				return СпособыНачисленияАмортизацииОС.ПоСуммеЧиселЛетИспользования;
			}
			else if(Ссылка == ПропорциональноОбъемуПродукции)
			{
				return СпособыНачисленияАмортизацииОС.ПропорциональноОбъемуПродукции;
			}
			else if(Ссылка == ПоЕНАОФ)
			{
				return СпособыНачисленияАмортизацииОС.ПоЕНАОФ;
			}
			else if(Ссылка == ПоЕНАОФНа1000кмПробега)
			{
				return СпособыНачисленияАмортизацииОС.ПоЕНАОФНа1000кмПробега;
			}
			else if(Ссылка == ПоИндивидуальномуГрафику)
			{
				return СпособыНачисленияАмортизацииОС.ПоИндивидуальномуГрафику;
			}
			return СпособыНачисленияАмортизацииОС.ПустаяСсылка;
		}
		public static byte[] Ключ(this СпособыНачисленияАмортизацииОС Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this СпособыНачисленияАмортизацииОС Значение)
		{
			switch (Значение)
			{
				case СпособыНачисленияАмортизацииОС.Линейный: return Линейный;
				case СпособыНачисленияАмортизацииОС.УменьшаемогоОстатка: return УменьшаемогоОстатка;
				case СпособыНачисленияАмортизацииОС.ПоСуммеЧиселЛетИспользования: return ПоСуммеЧиселЛетИспользования;
				case СпособыНачисленияАмортизацииОС.ПропорциональноОбъемуПродукции: return ПропорциональноОбъемуПродукции;
				case СпособыНачисленияАмортизацииОС.ПоЕНАОФ: return ПоЕНАОФ;
				case СпособыНачисленияАмортизацииОС.ПоЕНАОФНа1000кмПробега: return ПоЕНАОФНа1000кмПробега;
				case СпособыНачисленияАмортизацииОС.ПоИндивидуальномуГрафику: return ПоИндивидуальномуГрафику;
			}
			return Guid.Empty;
		}
	}
}